Primitieve gegevenstypen
Home

Primitieve gegevenstypen

Primitieve gegevenstypen

Number, String en Boolean zijn primitieve typen. Een, variabele bestaat uit een naam en een toegekende waarde. Bij een toekenning van de waarde van de ene variabele aan een andere variabele krijgt de tweede variabele een kopie van de waarde als de waarde een primitief type heeft. Dat wil dus zeggen dat als de waarde verandert van de kopie, de oorspronkelijke waarde niet mee verandert.

Beschrijving

Als je waarden in een programma wilt gebruiken kan je kiezen uit verschillende voorstellingen voor die waarden afhankelijk van wat je met die waarden wilt doen. Deze verschillende representaties voor waarden worden types genooemd. JavaScript heeft ingebouwde types de primitieve waarden:

Als je met waarden wilt rekenen gebruik je number.

Als je een waarde wilt af drukken op het scherm of gewoon 'iets' wil neerschrijven gebruik je een string, namelijk één of meer letters, woorden of zinnen.

Als je een beslissing wilt nemen in het programma, gebruik je boolean, namelijk true of false.

Waarden die direct in de broncode staan worden letterlijk (literal) genoemd. letterlijke tekenreeksen zijn omgeven door dubbele aanhalingstekens ( "...") of enkele aanhalingstekens ( '...') -het enige verschil is stilistische voorkeur. number en boolean literals worden weergegeven zoals ze zijn, bijvoorbeeld 42, true, etc.).

"Dit is een tekst." ;
'Nog een tekst' ;
4;
true ;
false ;

By value not by reference

Primitieve gegevenstypen zijn by value en niet by reference in tegenstelling met objecten.

Geheugendiagram toekenningsopdrachten var
Geheugendiagram toekenningsopdrachten var

Type

Elke waarde die je in een variabele stopt is van een bepaald type. In JavaScript zijn er slechts 5 primitieve gegevenstypen:

Elke waarde die niet tot één van de vijf hier boven vermelde primitieve typen is een object.

Als we een variabele declareren maar niet initialiseren, zijn het type en de waarde van deze variabele undefined, wat we in een geheugendiagram aangeven met een ?:

Geheugendiagram undefined
Geheugendiagram undefined

Typeof

Gebruik de typeof operator als je het het type van een variabele of een waarde wilt te weten komen.

Deze operator retourneert een tekenreeks die het gegevenstype vertegenwoordigt. De retourwaarden van typeof:

  1. "number"
  2. "string"
  3. "boolean"
  4. "undefined"
  5. "object"
  6. "function"

Waar zit de null? En wat doet function hier?

Merk op dat de eenvoudige primitieven (string, boolean, nummer, null en undefined) zelf geen objecten zijn. null wordt soms aangeduid als een object, maar dat is een misvatting die voortkomt uit een bug in de taal die ervoor zorgt dat typeof null de string "object" foutief retourneert. In feite, is null een eigen primitief type.

The latest ECMAScript standard defines seven data types:

  1. Six data types that are primitives:
    1. Boolean. true and false.
    2. null. A special keyword denoting a null value. Because JavaScript is case-sensitive, null is not the same as Null, NULL, or any other variant.
    3. undefined. A top-level property whose value is undefined.
    4. Number. 42 or 3.14159.
    5. String. "Howdy"
    6. Symbol (new in ECMAScript 6). A data type whose instances are unique and immutable.
  2. and Object

Object subtypen of complexe primitieven

Dat "alles in JavaScript een object is" is een veel voorkomende misvatting. Dat is duidelijk niet waar. Wel zijn er enkele bijzondere object subtypes, ,namelijk de complexe primitieven.

Het type function is een subtype van het object (technisch gezien een "callable object"). Van functies in JS wordt gezegd dat ze "first class" zijn, d.w.z. objecten met oproepbare gedragssemantiek op vastgeschroefd. Dat zorgt er wel voor dat ze kunnen worden gebruikt als elk ander object. (Kyle Simpson, 2014, p. 38)

Arrays zijn ook een subtype van objecten, met extra gedrag. De organisatie van de inhoud van arrays is iets meer gestructureerd dan voor algemene objecten.

Er zijn ook nog object subtypen die ingebouwde objecten worden genoemd.

Afgaand op sommige namen zou je kunnen denken dat ze direct verband houden met hun eenvoudige primitieve tegenhangers, maar het is ingewikkelder dan dat zoals we zullen zien.

JI
2017-09-24 13:55:03